/*
 * @Description: 状态码处理和处理异常
 * @Author: laoyuan
 * @Date: 2023-04-25 14:31:09
 */
import { ElMessage } from 'element-plus';

export function checkStatus(status: number, msg: string) {
  let message = '';
  switch (status) {
    case 401:
      message = '您未登录，或者登录已经超时，请先登录！';
      break;
    default:
      message = msg;
  }
  return message;
}

export function checkDataStatus(status: string, msg: string) {
  let message: string = '';
  let success: boolean = false;
  switch (status) {
    case '00000':
      success = true;
      message = '您未登录，或者登录已经超时，请先登录！';
      break;
    case '000000':
      success = true;
      message = '您未登录，或者登录已经超时，请先登录！';
      break;
    default:
      success = false;
      message = msg;
  }
  if (!success) {
    ElMessage({
      message: message,
      type: 'error',
    });
  }
  return success;
}

/**
 * @description: 返回值异常处理函数:包装一个promise请求，写上catch，返回一个结果确定的promise
 * @param {Promise} p
 * @return {*}
 */
export function errorCatch<T = any>(p: Promise<any>): [T, any] {
  return p.then(res => [res, undefined]).catch(err => [undefined, err]) as unknown as [T, any];
}

// if (error.response.status) {
//   switch (error.response.status) {
//     // 401: 未登录
//     // 未登录则跳转登录页面，并携带当前页面的路径
//     // 在登录成功后返回当前页面，这一步需要在登录页操作。
//     case 401:
//       router.replace({
//         path: '/login',
//         query: {
//           redirect: router.currentRoute.fullPath
//         }
//       });
//       break;
//
//     // 403 token过期
//     // 登录过期对用户进行提示
//     // 清除本地token和清空vuex中token对象
//     // 跳转登录页面
//     case 403:
//       Toast({
//         message: '登录过期，请重新登录',
//         duration: 1000,
//         forbidClick: true
//       });
//       // 清除token
//       localStorage.removeItem('token');
//       store.commit('loginSuccess', null);
//       // 跳转登录页面，并将要浏览的页面fullPath传过去，登录成功后跳转需要访问的页面
//       setTimeout(() => {
//         router.replace({
//           path: '/login',
//           query: {
//             redirect: router.currentRoute.fullPath
//           }
//         });
//       }, 1000);
//       break;
//
//     // 404请求不存在
//     case 404:
//       Toast({
//         message: '网络请求不存在',
//         duration: 1500,
//         forbidClick: true
//       });
//       break;
//     // 其他错误，直接抛出错误提示
//     default:
//       Toast({
//         message: error.response.data.message,
//         duration: 1500,
//         forbidClick: true
//       });
//   }
//   return Promise.reject(error.response);
// }
